//package com.surfilter.massdata.es.core.model;
//
//import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
//
//import java.io.IOException;
//import java.util.List;
//import java.util.Map;
//
//import org.elasticsearch.common.xcontent.XContentBuilder;
//import org.elasticsearch.common.xcontent.XContentFactory;
//import org.elasticsearch.search.SearchHit;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import com.surfilter.massdata.es.core.entity.EsEntity;
//import com.surfilter.massdata.es.core.util.EsUtil;
//import com.surfilter.massdata.es.core.util.StringUtil;
//
//public class EsIpDomainRelation implements EsEntity<IpDomainRelation>{
//	
//	private static final Logger LOG = LoggerFactory.getLogger(EsIpDomainRelation.class);
//
//	@Override
//	public XContentBuilder createMappingJson(String typeName)
//			throws IOException {
//		XContentBuilder mapping = jsonBuilder()
//				.startObject()
//					.startObject(typeName)
//						.startObject("_source")
//							.field("enabled", true)
//							.endObject()
//						.startObject("_all")
//							.field("enabled", false)
//							.endObject()
//						.startObject("properties")
//							.startObject("ymid")
//								.field("type", "long")
//							.endObject()
//							.startObject("ym")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//							.endObject()
//							.startObject("ymSuffix")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//							.endObject()
//							.startObject("siteName")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//							.endObject()
//						    .startObject("shengIds")
//								.field("type", "long")
//								.field("index_name", "shengId")
//								.field("index", "no")
//							.endObject()								
//						    .startObject("shiIds")
//								.field("type", "long")
//								.field("index_name", "shiId")
//							.endObject()
//							.startObject("xianIds")
//								.field("type", "long")
//								.field("index_name", "xianId")
//								.field("index", "no")
//							.endObject()
//							.startObject("fxsj") 
//								.field("type", "date")
//								.field("format", "yyyy-MM-dd HH:mm:ss")
//								.field("index", "no")
//							.endObject()
//							.startObject("jrsIds")
//								.field("type", "long")
//								.field("index_name", "jrsId")
//							.endObject()
//							.startObject("jrsMcs")
//								.field("type", "string")
//								.field("index", "no")
//								.field("index_name", "jrsMc")
//							.endObject()
//							.startObject("wzjb")
//								.field("type", "long")
//								.field("index", "not_analyzed")
//							.endObject()
//							.startObject("ymzcsMc")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//							.endObject()
//							.startObject("sfch")
//								.field("type", "long")
//							.endObject()
//							.startObject("houseCodes")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//								.field("index_name", "houseCode")
//							.endObject()
//							.startObject("houseNames")
//								.field("type", "string")
//								.field("index", "no")
//								.field("index_name", "houseName")
//							.endObject()
//							.startObject("djym")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//							.endObject()
//							.startObject("gxsj") 
//								.field("type", "date")
//								.field("format", "yyyy-MM-dd HH:mm:ss")
//								.field("index", "no")
//							.endObject()
//							.startObject("ips")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//								.field("index_name", "ip")
//							.endObject()
//							.startObject("idcIspIds")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//								.field("index_name", "idcIspId")
//							.endObject()
//							.startObject("yysMcs")
//								.field("type", "string")
//								.field("index", "no")
//								.field("index_name", "yysMc")
//							.endObject()
//							.startObject("isRecord")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//							.endObject()
//							.startObject("domainCN")
//								.field("type", "string")
//								.field("index", "no")
//							.endObject()
//							.startObject("hostUnit")
//								.field("type", "string")
//								.field("index", "not_analyzed")
//							.endObject()
//							.startObject("license")
//								.field("type", "string")
//								.field("index", "no")
//							.endObject()
//							.startObject("domainValidity") 
//								.field("type", "date")
//								.field("format", "yyyy-MM-dd HH:mm:ss")
//								.field("index", "no")
//							.endObject()
//						.endObject()
//					.endObject()
//				.endObject();
//		return mapping;
//	}
//
//	@Override
//	public XContentBuilder buildEntity(IpDomainRelation ipDomainRelation)
//			throws IOException {
//		// ip 字段非空
//		String[] arrIp = ipDomainRelation.getIp().split(",");
//		int arrSize = arrIp.length;
//		if(arrSize>10000){
//			LOG.warn("into es ips :{},ips:{}",arrSize, ipDomainRelation.getIp());
//			arrSize = 10000;
//		}
//		
//		String splitStr = ",";
//		
//		Object[] arrShengId = EsUtil.transformLongArr(ipDomainRelation.getShengId()
//				, splitStr, arrSize);
//		Object[] arrShiId = EsUtil.transformLongArr(ipDomainRelation.getShiId()
//				, splitStr, arrSize);
//		Object[] arrXianId = EsUtil.transformLongArr(ipDomainRelation.getXianId()
//				, splitStr, arrSize);
//		
//		Object[] arrJrsId = EsUtil.transformLongArr(ipDomainRelation.getJrsId()
//				, splitStr, arrSize);
//		String[] arrJrsMc = EsUtil.transformStringArr(ipDomainRelation.getJrsMc()
//				, splitStr, arrSize);
//		
//		String[] arrHousCode = EsUtil.transformStringArr(ipDomainRelation.getHouseCode()
//				, splitStr, arrSize);
//		String[] arrHouseName = EsUtil.transformStringArr(ipDomainRelation.getHouseName()
//				, splitStr, arrSize);
//		
//		String[] arrIdcIspId = EsUtil.transformStringArr(ipDomainRelation.getIdcIspId()
//				, splitStr, arrSize);
//		
//		String[] arrYysMc = EsUtil.transformStringArr(ipDomainRelation.getYysMc()
//				, splitStr, arrSize);
//		XContentBuilder source = null;
//		try {
//			 source = XContentFactory.jsonBuilder().startObject()
//					.field("ymid" , ipDomainRelation.getYmid() )
//					.field("ym" , "")
//					.field("ymSuffix" , ipDomainRelation.getYmSuffix() )
//					.field("siteName" ,"")
//					.array("shengIds" , arrShengId )
//					.array("shiIds" , arrShiId )
//					.array("xianIds" , arrXianId )
//					.field("fxsj" , ipDomainRelation.getFxsj() )
//					.array("jrsIds" , arrJrsId )
//					.array("jrsMcs" , arrJrsMc )
//					.field("wzjb" , ipDomainRelation.getWzjb() )
//					.field("ymzcsMc" ,"")
//					.field("sfch" , ipDomainRelation.getSfch() )
//					.field("houseCodes" , arrHousCode )
//					.field("houseNames" , arrHouseName )
//					.field("djym" ,"")
//					.field("gxsj" , ipDomainRelation.getGxsj() )
//					.array("ips" , arrIp )
//					.array("idcIspIds" , arrIdcIspId )
//					.array("yysMcs" , arrYysMc )
//					.field("isRecord" , ipDomainRelation.getIsRecord() )
//					.field("domainCN" , ipDomainRelation.getDomainCN() )
//					.field("hostUnit" , ipDomainRelation.getHostUnit() )
//					.field("license" , ipDomainRelation.getLicense() )
//					.field("domainValidity" , ipDomainRelation.getDomainValidity() )
//				.endObject();
//		} catch (Exception e) {
//			LOG.error("data to entity error..", e);
//		}
//
//		return source;
//	}
//
//	@Override
//	public IpDomainRelation recoveEntity(Map<String, Object> propertiesMap) {
//		IpDomainRelation ipDomainRelation = new IpDomainRelation();
//		for (String key : propertiesMap.keySet()) {
//			if ("ymid".equals( key ) ) {
//				 ipDomainRelation.setYmid(Long.valueOf(propertiesMap.get(key).toString()));
//			}
//			else if ("ym".equals( key ) ) {
//				 String ym = (String)propertiesMap.get(key);
//				 if (StringUtil.isNotNull(ym)) {
//					 ipDomainRelation.setYm(ym.substring(1));
//				 }else {
//					 ipDomainRelation.setYm(null);
//				 }
//			}else if ("ymSuffix".equals( key ) ) {
//				 String ymSuffix = (String)propertiesMap.get(key);
//				 if (StringUtil.isNotNull(ymSuffix)) {
//					 ipDomainRelation.setYm(ymSuffix);
//				 }else {
//					 ipDomainRelation.setYm(null);
//				 }
//			}
//			 else if ("siteName".equals( key ) ) {
//				 String siteName = (String)propertiesMap.get(key);
//				 if (StringUtil.isNotNull(siteName)) {
//					 ipDomainRelation.setSiteName(siteName.substring(1));
//				 }else {
//					 ipDomainRelation.setSiteName(null);
//				 }
//			}
//			 else if ("shengIds".equals( key ) ) {
//				 List<Long> lstIps = (List<Long>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lstIps.size(); i < size; i++) {
//					 sb.append(lstIps.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setShengId(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("shiIds".equals( key ) ) {
//				 List<Long> lstIps = (List<Long>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lstIps.size(); i < size; i++) {
//					 sb.append(lstIps.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setShiId(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("xianIds".equals( key ) ) {
//				 List<Long> lstIps = (List<Long>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lstIps.size(); i < size; i++) {
//					 sb.append(lstIps.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setXianId(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("fxsjs".equals( key ) ) {
//				 ipDomainRelation.setFxsj((String)propertiesMap.get(key));
//			}
//			 else if ("jrsIds".equals( key ) ) {
//				 List<Long> lstIps = (List<Long>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lstIps.size(); i < size; i++) {
//					 sb.append(lstIps.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setJrsId(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("jrsMcs".equals( key ) ) {
//				 List<String> lstIps = (List<String>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lstIps.size(); i < size; i++) {
//					 sb.append(lstIps.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setJrsMc(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("wzjb".equals( key ) ) {
//				 if (propertiesMap.get(key) != null &&
//						 StringUtil.isNotNull(propertiesMap.get(key).toString())) {
//					 ipDomainRelation.setWzjb(Long.valueOf(propertiesMap.get(key).toString()));
//				 } else {
//					 ipDomainRelation.setWzjb(null);
//				 }
//			}
//			 else if ("ymzcsMc".equals( key ) ) {
//				 String ymzcsMc = (String)propertiesMap.get(key);
//				 if (StringUtil.isNotNull(ymzcsMc)) {
//					 ipDomainRelation.setYmzcsMc(ymzcsMc.substring(1));
//				 }else {
//					 ipDomainRelation.setYmzcsMc(null);
//				 }
//			}
//			 else if ("sfch".equals( key ) ) {
//				 if (propertiesMap.get(key) != null &&
//						 StringUtil.isNotNull(propertiesMap.get(key).toString())) {
//					 ipDomainRelation.setSfch(Long.valueOf(propertiesMap.get(key).toString()));
//				 } else {
//					 ipDomainRelation.setSfch(null);
//				 }
//			}
//			 else if ("houseCodes".equals( key ) ) {
//				 List<String> lstHouseCode = (List<String>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lstHouseCode.size(); i < size; i++) {
//					 sb.append(lstHouseCode.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setHouseCode(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("houseNames".equals( key ) ) {
//				 List<String> lsthouseName = (List<String>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lsthouseName.size(); i < size; i++) {
//					 sb.append(lsthouseName.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setHouseName(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("djym".equals( key ) ) {
//				 String djym = (String)propertiesMap.get(key);
//				 if (StringUtil.isNotNull(djym)) {
//					 ipDomainRelation.setDjym(djym.substring(1));
//				 }else {
//					 ipDomainRelation.setDjym(null);
//				 }
//			}
//			 else if ("gxsj".equals( key ) ) {
//				 ipDomainRelation.setGxsj((String)propertiesMap.get(key));
//			}
//			 else if ("ips".equals( key ) ) {
//				 List<String> lstIps = (List<String>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lstIps.size(); i < size; i++) {
//					 sb.append(lstIps.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setIp(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("idcIspIds".equals( key ) ) {
//				 List<String> lstIps = (List<String>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lstIps.size(); i < size; i++) {
//					 sb.append(lstIps.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setIdcIspId(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("yysMcs".equals( key ) ) {
//				 List<String> lstIps = (List<String>) propertiesMap.get(key);
//				 StringBuffer sb = new StringBuffer();
//				 for (int i = 0 ,size = lstIps.size(); i < size; i++) {
//					 sb.append(lstIps.get(i));
//					 if (i < size-1 ) {
//						sb.append(",");
//					}
//				 }
//				 ipDomainRelation.setYysMc(sb.toString());
//				 sb.delete(0, sb.length());
//			}
//			 else if ("isRecord".equals( key ) ) {
//				 ipDomainRelation.setIsRecord((String)propertiesMap.get(key));
//			}
//			 else if ("domainCN".equals( key ) ) {
//				 ipDomainRelation.setDomainCN((String)propertiesMap.get(key));
//			}
//			 else if ("hostUnit".equals( key ) ) {
//				 ipDomainRelation.setHostUnit((String)propertiesMap.get(key));
//			}
//			 else if ("license".equals( key ) ) {
//				 ipDomainRelation.setLicense((String)propertiesMap.get(key));
//			}
//			 else if ("domainValidity".equals( key ) ) {
//				 ipDomainRelation.setDomainValidity((String)propertiesMap.get(key));
//			}
//		}
//		return ipDomainRelation;
//	}
//
//	@Override
//	public XContentBuilder buildUpdateEntity(IpDomainRelation t)
//			throws IOException {
//		return null;
//	}
//
//	@Override
//	public IpDomainRelation recoveEntityAndIndex(
//			Map<String, Object> propertiesMap, SearchHit arrHits) {
//		// TODO Auto-generated method stub
//		return null;
//	}
//}
